package com.dragon.modules.yuegou.enums.wallet;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 商户收入类型
 */
public enum MerchantIncomeType {

    /**
     * 悦币
     */
    YUECOIN(0, "悦币"),
    /**
     * 会员购买的悦卡
     */
    YUECARDBOUGHT(1, "会员购买的悦卡"),
    /**
     * 企业发放的悦卡
     */
    YUECARDGRANTED(2, "企业发放的悦卡"),
    /**
     * 微信
     */
    WECHAT(3, "微信"),
    /**
     * 支付宝
     */
    ALIPAY(4,"支付宝");

    /**
     * 枚举标识
     */
    private final Integer code;

    /**
     * 别名
     */
    private final String alias;

    private MerchantIncomeType(Integer code, String alias) {
        this.code = code;
        this.alias = alias;
    }

    public Integer getValue() {
        return code;
    }

    /**
     * 枚举标识
     *
     * @return code
     */
    public Integer getCode() {
        return code;
    }

    /**
     * 别名
     *
     * @return alias
     */
    public String getAlias() {
        return alias;
    }

    /**
     * 把code转化为费用类型枚举
     *
     * @param code 代码
     * @return
     */
    @JsonCreator
    public static MerchantIncomeType from(Integer code) {
        if (code == null) {
            return null;
        }
        return CODE_MAP.get(code);
    }

    /**
     * Code Map for CardExtractCodeStage
     */
    private static final Map<Integer, MerchantIncomeType> CODE_MAP = Stream.of(MerchantIncomeType.values())
            .collect(Collectors.toMap(MerchantIncomeType::getCode, e -> e));
}
